/*
 * Copyright (c) 2021 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef IGEOFENCE_IMPL_INTERFACE_H
#define IGEOFENCE_IMPL_INTERFACE_H


#include <string>
#include <memory>
#include <map>
#include <errors.h>
#include "geofence_data_utils.h"

namespace OHOS {
namespace Msdp {
class IgeofenceImplInterface {
public:
    using CallbackLocationImpl = std::function<int32_t(GeofenceDataUtils::LocationData&)>;
    using CallbackCloudImpl = std::function<int32_t(GeofenceDataUtils::CloudData&)>;

    ErrCode RegisterLocationCallback(CallbackLocationImpl callback);
    ErrCode UnregisterLocationCallback() const;
    ErrCode RegisterCloudCallback(const GeofenceDataUtils::PoiOptions& poiOptions, CallbackCloudImpl callback);
    ErrCode UnregisterCloudCallback() const;
    GeofenceDataUtils::CloudData GetCloudCacheDataImpl(const GeofenceDataUtils::PoiOptions& poiOptions);
    void SetTrackImpl(std::string timeString, int32_t screenState, std::string cell);
    ErrCode Enable();
    ErrCode Disable();

private:

};
}
}
#endif // IGEOFENCE_IMPL_INTERFACE_H
